import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

// 不需要验证的路由
const publicRoutes = ['/login', '/register', '/reset-password', '/home', '/']

export function middleware(request: NextRequest) {
  const token = request.cookies.get('token')?.value
  const { pathname } = request.nextUrl

  // 如果是主页，重定向到 /home
  if (pathname === '/') {
    return NextResponse.redirect(new URL('/home', request.url))
  }

  // 如果是公开路由，直接放行
  if (publicRoutes.includes(pathname)) {
    return NextResponse.next()
  }

  // 如果没有token且不是公开路由，重定向到登录页
  if (!token) {
    const loginUrl = new URL('/login', request.url)
    // 保存原始URL，登录后可以重定向回来
    loginUrl.searchParams.set('callbackUrl', pathname)
    return NextResponse.redirect(loginUrl)
  }

  // 如果有token，继续访问
  return NextResponse.next()
}

// 配置需要进行中间件处理的路由
export const config = {
  matcher: [
    /*
     * 匹配所有路径，除了：
     * - api 路由（/api/*)
     * - 静态文件（/_next/static/*, /_next/image/*, /favicon.ico, /logo.png 等）
     */
    '/((?!api|_next/static|_next/image|favicon.ico|.*\\.png$).*)',
  ],
}
